/*
* 1.检查一个文件是否存在
*   fs.existsSync(path)//同步操作
*
* 2.获取文件信息
    fs.stat(path, callback)(异步操作)
    fs.statSync(path)(同步操作)

 3.删除文件
    fs.unlink(path, callback)(异步操作)
    fs.unlinkSync(path)(同步操作)

 4.读取一个目录的目录结构
    fs.readdir(path[, options], callback)(异步操作)
    fs.readdirSync(path[, options])(同步操作)

  5.截断文件，将文件修改成指定字节大小
    fs.truncate(path, len, callback)
    fs.truncateSync(path, len)

   6.创建目录
    fs.mkdir(path[, mode], callback)
    fs.mkdirSync(path[, mode])

   7.删除目录
    fs.rmdir(path, callback)
    fs.rmdirSync(path)
    
    8.重命名文件或者目录
    fs.rename(oldPath, newPath, callback)
    fs.renameSync(oldPath, newPath)

    9.监视文件更改写入
    fs.watchFile(filename[, options], listener)
* */

var fs = require("fs");
//1.检查一个文件是否存在
console.log(fs.existsSync("xxx.png"));//返回false,xxx.png文件不存在
console.log(fs.existsSync("a.mp3"));//返回true,a.mp3文件存在

//2.获取文件信息(异步操作)
fs.stat("b.png",function (err,stat) {
    if(!err){
        //这个stat对象保存了当前文件的信息
        console.log("fs.stat获取文件信息：");
        console.log(stat);
        console.log("文件大小："+stat.size);
        console.log("判断是为文件："+stat.isFile());
        console.log("判断是为目录(文件夹)："+stat.isDirectory());
    }
});
//获取文件信息(同步操作)
var stat = fs.statSync("c.mp3");//会返回一个对象，这个stat对象保存了当前文件的信息
console.log("fs.statSync获取文件信息：");
console.log(stat);
console.log("文件大小："+stat.size);
console.log("判断是为文件："+stat.isFile());
console.log("判断是为目录(文件夹)："+stat.isDirectory());

//3.删除文件(同步操作)
//fs.unlinkSync("hello4.txt");
//.删除文件(异步步操作)
/*
fs.unlink("hello3.txt",function (err) {
    if(!err){
        console.log("fs.unlink异步删除文件成功");
    }
});*/

//4.读取一个目录的目录结构
console.log("使用fs.readdirSync同步读取fileSystem的目录结构：");
var files = fs.readdirSync(".");//.代表的是当前目录，返回值files是一个字符串数组，里面的每一个元素就是文件或者文件夹的名字
console.log(files);
fs.readdir("../npm",function (err,files) {
    if(!err){
        console.log("使用fs.readdir异步读取npm的目录结构：");
        console.log(files);//files是一个字符串数组，里面的每一个元素就是文件或者文件夹的名字
    }
});

//5.截断文件，将文件修改成指定字节大小
console.log(fs.truncateSync("hello.txt", 9));//将文件截断成9个字节大小，一个汉字占3个字节
fs.truncate("hello2.txt",9,function (err) {//异步
    if(!err){
        console.log("截断成功");
    }
});

//6.创建目录
/*fs.mkdirSync("GACL");
fs.mkdir("XDP",function (err) {
    if(!err){
        console.log("fs.mkdir异步创建目录成功");
    }
});*/

//7.删除目录
/*
fs.rmdir("GACL",function (err) {
    if(!err){
        console.log("fs.rmdir异步删除目录成功");
    }
});
fs.rmdirSync("XDP");
*/

//8.重命名文件
/*fs.rename("a.mp3","xdp.mp3",function (err) {//异步操作
    if(!err){
        console.log("fs.rename重命名文件成功");
    }
});*/
//重命名目录
/*fs.rename("xdp","xdpGACL",function (err) {//异步操作
    if(!err){
        console.log("fs.rename重命名目录成功");
    }
});
//重命名文件并移动到npm目录，相当于剪切操作
fs.rename("a.png","../npm/xdp.png",function (err) {//异步操作
    if(!err){
        console.log("fs.rename重命名文件并移动到npm目录成功");
    }
});*/
//fs.renameSync("b.mp3","gacl.mp3");

/**
 * 监听hello2.txt的修改，每隔1秒钟检查一次
 */
fs.watchFile("hello2.txt",{interval:1000},function (curr, prev) {
    console.log("hello2.txt被修改了，修改前的文件大小为："+prev.size+"，修改后的文件大小为："+curr.size);
});

